package modelo

import scala.collection.mutable.Buffer
import scala.util.Random
import org.joda.time._

object Curso extends InstanceController {
  type T = Curso  
}

class Curso (val materia : Materia, val cuatrimestre : Cuatrimestre, var docente : Docente){
  
  Curso.register(this)
  materia.agregarCurso(this)
  
  val mapEstudianteResultado = collection.mutable.Map[Estudiante,ResultadoCursada]()
  val clases = Buffer[Clase]()
  // Lunes = 1, Sabado = 6, Domingo no se cursa
  val dia : Int = Random.nextInt(6) + 1
  
  def inicializarCurso (desde : LocalTime, hasta : LocalTime, recursosRequeridos: Set[Recurso], m2Pizarron : Int) = {
    
    var fecha = new LocalDate(cuatrimestre.inicio)
    while (fecha.getDayOfWeek() != dia) { fecha = fecha.plusDays(1) }
    
    while (fecha.isBefore(cuatrimestre.fin)) {
     
      var clase = new Clase(this)
      clase.inicializarClase(desde, hasta, recursosRequeridos, m2Pizarron, fecha)
      clases += clase
      fecha = fecha.plusDays(7) 
    }
    
    // clases = cuatrimestre.inicio.weeklyOnUntil(dia, cuatrimestre.fin).map(new Clase(_, ...))
  }
  
  def alumnos = mapEstudianteResultado.keys

  def resultados = mapEstudianteResultado.values
}